The invention relates generally to computer operating systems, and deals more particularly with event management services within a computer operating system.
During the course of operating a computer system, many types of events can occur, for example, pressing of an enter (function) key on a keyboard, loading of data from a disk into memory, or occurrence of severe errors or trace events, etc. Data may be associated with the event such as a character key that was pressed before the enter key or the name of the disk that was loaded. Previously known operating systems manage events such that when the event occurs, the operating systems notify one or more application programs executing within the system that are interested in the event and furnish associated event data, if any. After notification, the application program or programs can process the event data, or take other action in response to the event notification.
A prior art IBM System/38 operating system manages events in the following manner. Each of the events is defined with a name from a predetermined set of numerical names, consisting of a class, type and subtype. The operating system reserves certain of the predetermined names to represent common hardware and software events, and makes the other names available to application programs to identify other events. Application programs also can dynamically define event monitors to receive notification of defined events. When the event occurs, the operating system or the application that detects the event calls an EventSignal function, and then continues with other processing. The EventSignal function signals one or more of the event monitors which are interested in the event, i.e. all of the event monitors which name events having the same class, type, and subtype identification as found in the event definition. Generic type and/or subtype specifications are also allowed. If there is more than one interested event monitor, the EventSignal function signals the interested event monitors in a broadcast mode, i.e. substantially simultaneously. Then, the event monitor(s) notify respective event handling subroutines of application program(s) which are interested in the event, to act upon the event notification and/or process the event data.
The event handlers operate synchronously or asynchronously relative to the occurrence of the events. In an asynchronous "trap" mode, the event handler requests notification of an event but does not wait idly for the event to occur if it has not yet occurred. When the event occurs and the respective event monitor is signalled, the event monitor notifies the event handler by sending an interrupt followed by the event data. In a synchronous "test" mode, the event handler periodically asks the event monitor whether the event has occurred, and if so, responds to the event and/or processes event data. If the event has not occurred, then the event handler performs other work. In a synchronous "trap" mode, the event handler requests the event notification and event data once, waits in a sleep mode until the event occurs; and is awakened with the event notification. The System/38 operating system also supports dynamic enabling and disabling of event monitors. A disabled event monitor will not notify the corresponding event handler of an event. Also, in the System/38 operating system, it is possible to mask an event handler against receipt of event signals.
Certain types of events such as program trace events are generated periodically. The System/38 operating system allows specification of a maximum number of events and associated event data to be retained, tied to an interested event monitor, or specification that the events and associated event data should be retained without limit while an interested event monitor is disabled. In the former case, when the maximum number of events and associated event data is exceeded, subsequent new events and associated event data which exceed the maximum level are discarded.
While the System/38 operating system provides a substantial amount of control and efficiency in managing events and permits associated application programs to participate in defining the event management services, further improvements are desirable to permit an operating system to more efficiently and more comprehensively manage the events according to the specific requirements of the computer system and the associated application programs.
Accordingly, a general object of the present invention is to provide event management services which efficiently and comprehensively manage events and permit associated application programs and other parts of the computer system to tailor the event management services to their specific needs.
Another object of the present invention is to provide event management services of the foregoing type which permit associated event signallers, event definers and/or event handlers to operate in an efficient and optimum manner.